package mapsdev.impl;

import java.util.concurrent.atomic.AtomicInteger;

import mapsdev.ContaBancaria;

public class ContaAtomica implements ContaBancaria {

	private final int numero;

	private final AtomicInteger saldo;

	public ContaAtomica(int numero, int saldo) {
		super();
		this.numero = numero;
		this.saldo = new AtomicInteger(saldo);
	}

	@Override
	public void deposita(int quantidade) {
		this.saldo.addAndGet(quantidade);
	}

	@Override
	public int numeroDaConta() {
		return this.numero;
	}

	@Override
	public boolean saca(int quantidade) {
		if (this.saldo.get() >= quantidade) {
			if (this.saldo.getAndAdd(-quantidade) < 0) {
				this.saldo.addAndGet(quantidade);
				return false;
			}
			return true;
		}
		return false;
	}

	@Override
	public int saldo() {
		return this.saldo.get();
	}

}
